function AjaxClient() { this.extraParams = new Object(); this.response = ''; this.error = ''; this.onSuccess = function () { alert( 'Please override onSuccess callback.' ); }; this.onLoading = function () { //alert( 'Please override onLoading callback.' ); }; this.onError = function ( err) { alert( err ); }; this.submitForm = function(obj, serverClass, serverMethod) { var params = new Object(); for ( i=0; i= 0 ) { params[element.name] = element.options[element.selectedIndex].value } break; case "SELECT-MULTIPLE": for ( var nr2 = 0; nr2 < e.options.length; nr2++ ) { if ( element.options[nr2].selected ) { params[element.name] = element.options[nr2].value } } break; } } this.call(obj.action, obj.method, serverClass, serverMethod, params); }; this.call = function( uri, method, serverClass, serverMethod, params ) { var args = ''; var selfReference = this; if( method.toUpperCase() == 'POST'){ args += '__serverClass=' + serverClass + '&__serverMethod=' + serverMethod; this.http.open( 'POST', uri ); this.http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=iso-8859-1'); this.http.onreadystatechange = function(){CIAO_AJAX_stateHandler(selfReference );} for ( property in params ) { var sValue = '' + params[ property ]; sValue = escape( sValue.replace( /%/g, "%25" ) ); args += '&' + property + '=' + sValue; } this.http.send(args); }else{ uri += '?__serverClass=' + serverClass + '&__serverMethod=' + serverMethod; for ( property in params ) { var sValue = '' + params[ property ]; sValue = escape( sValue.replace( /%/g, "%25" ) ); uri += '&' + property + '=' + sValue; } this.http.open( 'get', uri ); this.http.setRequestHeader('Content-Type', 'text/html; charset=iso-8859-1'); this.http.onreadystatechange = function(){CIAO_AJAX_stateHandler(selfReference );} this.http.send( null ); } }; this.createRequestObject = function () { var request_o; //declare the variable to hold the object. var browser = navigator.appName; //find the browser name if( browser == "Microsoft Internet Explorer" ){ /* Create the object using MSIE's method */ request_o = new ActiveXObject( "Microsoft.XMLHTTP" ); }else{ /* Create the object using other browser's method */ request_o = new XMLHttpRequest(); } return request_o; //return the object }; this.http = this.createRequestObject(); } function CIAO_AJAX_stateHandler(client) { /* Make sure that the transaction has finished. The XMLHttpRequest object has a property called readyState with several states: 0: Uninitialized 1: Loading 2: Loaded 3: Interactive 4: Finished */ if( client.http.readyState == 4 ){ var response = ''; eval("response = " + unescape( client.http.responseText.replace( /%/g, "%25" ) ) ); if( client.http.status != 200 ) { client.onError( 'HTTP Error, received status ' + client.http.status + ' instead of expected 200', null ); } else if( response[ 'error' ] != '' ) { client.onError( response[ 'error' ], response[ 'result' ] ); } else { client.onSuccess( response[ 'result' ] ); } } else if( client.http.readyState == 1 ) { client.onLoading(); } } function debugToDiv ( oToDebug, sDivId, iIndent ) { for ( mProperty in oToDebug ) { var oMember = oToDebug[ mProperty ]; var j = 0; for( j=0; j'; debugToDiv( oMember, sDivId, iIndent + 1 ); } else { document.getElementById( sDivId ).innerHTML += ( mProperty + ' => ' + oMember + '
' ); } } }